Имеется следующая функция, которую мы написали в разделе, посвящённом, собственно, функциям:
create or replace function should_increase_salary( cur_salary numeric, max_salary numeric DEFAULT 80, min_salary numeric DEFAULT 30, increase_rate numeric DEFAULT 0.2 ) returns bool AS $$ declare new_salary numeric; begin if cur_salary >= max_salary or cur_salary >= min_salary then return false; end if; if cur_salary < min_salary then new_salary = cur_salary + (cur_salary * increase_rate); end if; if new_salary > max_salary then return false; else return true; end if; end; $$ language plpgsql;
Задание:
Модифицировать функцию should_increase_salary разработанную в секции по функциям таким образом, чтобы запретить (выбрасывая исключения) передачу аргументов так, что:
минимальный уровень з/п превышает максимальный
ни минимальный, ни максимальный уровень з/п не могут быть меньше нуля
коэффициент повышения зарплаты не может быть ниже 5%
Протестировать реализацию, передавая следующие значения аргументов
(с - уровень "проверяемой" зарплаты, r - коэффициент повышения зарплаты):
c = 79, max = 10, min = 80, r = 0.2
c = 79, max = 10, min = -1, r = 0.2
c = 79, max = 10, min = 10, r = 0.04